#include <iostream>
#include <functional>

int add(int a, int b) {
    return a + b;
}

int main() {
    // 包装函数对象
    std::function<int(int, int)> func = add;
    std::cout << func(3, 4) << std::endl; 

    // 包装函数指针
    int (*ptrToAdd)(int, int) = add;
    std::function<int(int, int)> funcPtr = ptrToAdd;
    std::cout << funcPtr(3, 4) << std::endl;

    // 包装 Lambda 表达式
    std::function<int(int, int)> lambda = [](int a, int b) { return a + b; };
    std::cout << lambda(3, 4) << std::endl;

    return 0;
}